Synchronization is a function that provides or maintains consistency between data sets. For example, a desktop computer may have desktop data sets regarding personal information management (“PIM”). A user of that desktop computer may desire to use that PIM data when she is away from her desktop computer. Therefore, she may desire access to the PIM data while using a laptop computer or a personal digital assistant (“PDA”) such as a phone or other device (terminal, computer, handheld, embedded computer etc.). In order to accommodate that desire, her laptop computer and PDA may each carry PIM data sets that correspond to the PIM data sets on the desktop computer. The role of the synchronization function is to give the user a common view of her data on each device. This role is generally accomplished by synchronization events when two or more of the devices synchronize.
A common technique for synchronizing devices is by using snapshots of data at a point in time and comparing current data to the snapshot to determine what has changed (snapshots may be maintained for the local database and for other peers in a set of syncing peers). For illustration purposes, refer to FIG. 1 where there is shown a model for two devices, a desktop computer 100 and a portable computer 110. Desktop computer has PIM database 101, which keeps current information for PIM data sets that are edited or added on the desktop computer 100. Desktop computer 100 also has desktop snapshot database, which is a snapshot of the PIM data sets taken at some point in time but typically the time of a prior synchronization (perhaps, the most recent synchronization). Similarly, portable computer 110 has portable database 111 for current PIM data (and, like PDA 120 or any syncing peer, may also have a snapshot database). Having these structures in place, we may attempt to synchronize desktop 100 and portable 110. Typical synchronization occurs by comparing both portable database 111 and desktop database 101 with snapshot database 102. During the compare operation, we can then assemble a list of data items that are new or changed in the active databases 101 and 111 as compared to database 102 (e.g. this may be called a change-set). Finally, to finish out the synchronization, the list of new and changed data may be used to update all three databases 101, 102, and 111.
As more users begin to store structured data and each user begins to carry several corresponding sets of structured data on different devices, the task of maintaining common views of data sets becomes more challenging. One exemplary problematic area is the task of synchronizing data between devices that do not come in close proximity to one and other. For example, a user may have a computer at home, another computer at the office, and a data-carrying PDA that is anchored in a service vehicle. If the user wishes to synchronize data across these three devices, she must do so over various networks such as the Internet, the phone network or some other communication mechanisms. In the prior art, there are suggested techniques for using an intermediary server and other techniques for partially solving the problem.
Some of the related prior art techniques for synchronization may be found in the following U.S. Pat. No. 5,710,922 “Method for synchronizing and archiving information between computer systems,” which is incorporated herein by reference. In addition, the following pending patent applications offer similarly interesting information and are hereby incorporated by reference: “A Method of Synchronizing Between Three or More Devices” by Toby Paterson and Jerome Lebel, having application Ser. No. 10/853,306 and filed May 24, 2004; “A Method of Synchronizing” by Toby Patterson and Jerome Lebel, having application Ser. No. 10/852,926 and filed May 24, 2004; and “Apparatus And Method For Peer-To-Peer N-Way Synchronization In A Decentralized Environment,” having application Ser. No. 11/157,647 and filed Jun. 21, 2005.
In view of the discussion herein as well as the other problems existing in the prior art the solutions and inventions as discussed below are proposed.